package kr.hkit.powerjava.chapter23;

class Counter{
	private int value;
	public synchronized void increment(){value++;}
	public synchronized void decrement() {value--;}
	public synchronized void prnCount(){System.out.println(value);}
}

class SharedThread extends Thread{
	Counter sharedCounter;

	public SharedThread(Counter sharedCounter) {
		this.sharedCounter = sharedCounter;
		this.start();
	}
	
	@Override
	public void run() {
		int i=0;
		while(i<20000){
			sharedCounter.increment();
			sharedCounter.decrement();
			if(i % 40 ==0){
				sharedCounter.prnCount();
				try{
					sleep((int)(Math.random() *2));
				}catch(InterruptedException e){	}
			}
			
			
			
			i++;
		}
	}
}
public class CounterTest {

	public static void main(String[] args) {
		Counter c  = new Counter();
		new SharedThread(c);
		new SharedThread(c);
		new SharedThread(c);
		new SharedThread(c);
	}
}
